/**
 * @param {String} nombre
 * @properties={typeid:24,uuid:"eaa3f338-7d8e-47e1-9288-1b7101d58bcb"}
 */
function BorrarForm(nombre)
{
	//globals.CerrarForm()
	var success = history.removeForm(nombre)
	if(success)
	{
		solutionModel.removeForm(nombre)
	}
}

/**
 * @param {JSEvent} [event]
 * @param {String} [nombre]
 * 
 * @properties={typeid:24,uuid:"069562c1-ef54-4015-8af0-f6ee06612043"}
 */
function CerrarForm(event,nombre)
{
	var $nombre
	if (nombre)
		$nombre = nombre
	else
		$nombre = 'dialog'
	var $win = application.getWindow($nombre)
	$win.hide()
	$win.destroy()
}

/**
 *
 * @param {String} titulo
 * @param {String} mensaje
 * @param {...String} boton
 * 
 * @Comentario:
 * Los metodos deben ser globales y no deben tener parametros.
 * Si se necesitan parametros, hacer un metodo dinamico que lo unico que tenga es la 
 * llamada al otro metodo con parametros o local de un form para setearle al boton.
 * 
 * @properties={typeid:24,uuid:"4bc118ce-53ef-4e64-acac-4644b0206aee"}
 */
function gDialog(titulo,mensaje, boton)
{

	//Seteo todas las variables que voy a necesitar
	//var titulo = arguments[0] // Guardo el primer argumento como el titulo del dialog
	//var mensaje = arguments [1] // Guardo el segundo argumento como el mensaje del dialog
//	var server = currentcontroller.getDataSource() //Guardo el servidor del form que estoy usando
	var i = 2; // Variable para recorrer los argumentos
	var Xinicial = 1 // Posicion Y para el primer boton
	
	//Obtengo el form que cree antes
	var nombre = 'midialog'
	var diag = solutionModel.getForm(nombre)

	globals.BorrarForm(nombre)
	var form
	if (!diag)
	{
		// Creo un nuevo form
		form = solutionModel.newForm( nombre,  null,  'infocom_fwk',  false,  350,  100)
	}
	else
	{
		form = diag
	}
	//Seteo el navigator como ninguno
	form.navigator = SM_DEFAULTS.NONE
	
	var $onShow = form.getMethod('onShow')
	if (!$onShow)
	{	
		$onShow = form.newMethod('function onShow(fistShow,event) {elements.fld_msj.requestFocus();}')
		form.onShow = $onShow
	}
	
	form.styleName = 'infocom_fwk'
	//Agrego un campo para mostrar el mensaje
	var vari = form.getVariable('texto_msj')
	if (!vari)
		vari = form.newVariable('texto_msj', JSVariable.TEXT)
	forms[nombre][vari.name] = mensaje
	var txt = form.getField('fld_msj')
	if (!txt)
	{
		txt =  form.newTextArea(vari, 1, 1, 300, 60) //form.newLabel(mensaje, 1, 1, 300, 60)	//
		txt.name		= 'fld_msj'
		txt.scrollbars 	= SM_SCROLLBAR.HORIZONTAL_SCROLLBAR_NEVER | SM_SCROLLBAR.VERTICAL_SCROLLBAR_NEVER
		txt.editable 	= false
		txt.transparent = true
		txt.borderType 	= 'Empty'
		txt.styleClass 	= 'dialog'
	}

	var j = 0
	//Borro todos los botones q hay en el form
	var $elems 	= forms[nombre].elements.allnames
	if ($elems.length > 0)
	{
		var $btns 	= $elems.filter(function(item) { return item.indexOf('btn_', 0) >= 0; })
		for (var z = 0 ; z < $btns.length ; z++)
		{
			form.removeButton($btns[z])
		}
	}
	
	// Recorro los argumentos hasta que no haya mas y voy creando un boton por cada uno (con su respectivo metodo)
	while (arguments[i] != null)
	{		
		var x = Xinicial + (j * 90)
		/** @type {String}*/
		var _texto = arguments[i] //Guardo el texto que va a tener el boton
		/** @type {String}*/
		var $metodo 
		//Valido que me hayan pasado un metodo para este boton, sino le pongo nulo
		if (arguments[i+1] == null)
			$metodo = 'CerrarForm'
		else
			$metodo = arguments[i+1]//Guardo el metodo que le voy a poner al boton
		var metodo = solutionModel.getGlobalMethod('globals', $metodo)
		var $boton = form.newButton(_texto, x, 80, 80, 20, metodo)
		$boton.styleClass = 'dialog'
		$boton.name = 'btn_'+i
		i = i+2
		j++
	}
	
	forms[nombre].controller.recreateUI()
	
	// Muestro el form que recien cree en un dialog
	gShowInDialog(nombre , titulo,  'dialog', true)
}

/**
 * 
 * @param {String}  frm
 * @param {String}  titulo
 * @param {String}  wName
 * @param {Boolean} modal
 * @properties={typeid:24,uuid:"E0AD678E-ECF5-4F99-A6AA-831B4863046A"}
 */
function gShowInDialog(frm,titulo,wName,modal) {
	var $win = application.createWindow(wName, JSWindow.MODAL_DIALOG);
	$win.title = titulo;
	forms[frm].controller.show($win);
	
}
